home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ABERMUD.ZIP / GAMEGO.C < prev    next >
C/C++ Source or Header  |  1989-07-08  |  3KB  |  178 lines

  1. #include <stdio.h>
  2.  
  3. /*
  4.  
  5.      Two Phase Game System
  6.  
  7. */
  8. extern FILE *openlock();
  9.  
  10. char **argv_p;
  11.  
  12. main(argc,argv)
  13. char *argv[];
  14. {
  15. char x[32];
  16. extern char globme[];
  17. extern long tty;
  18. sig_init();
  19. argv_p= argv;
  20. if(argc!=2)
  21. {
  22.     printf("Args!\n");
  23.     exit(0);
  24. }
  25. printf("Entering Game ....\n");
  26. strcpy(x,argv[1]);
  27. tty=0;
  28. /*if(tty==4) {initbbc();initscr();topscr();}*/
  29. if(!strcmp(x,"Phantom")) sprintf(globme,"The %s",x);
  30. else strcpy(globme,x);
  31. printf("Hello %s\n",globme);
  32. syslog("GAME ENTRY: %s[%s]",globme,cuserid(NULL));
  33. keysetup();
  34. talker(globme);
  35. }
  36.  
  37. char privs[4];
  38.  
  39. crapup(str)
  40. char *str;
  41. {
  42.     extern long pr_due;
  43. pbfr();
  44. pr_due=0;  /* So we dont get a prompt after the exit */ 
  45. keysetback();
  46. printf("\n\
  47. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\
  48. \n\n%s\n\n\
  49. exit(0);
  50. }
  51.  
  52. listfl(name)
  53. char *name;
  54. {
  55. FILE *a;
  56. char b[128];
  57. a=openlock(name,"r+");
  58. while(gets(a,b)) printf("%s\n",b);
  59. fcloselock(a);
  60. }
  61.  
  62. char *getkbd(s,l)   /* Getstr() with length limit and filter ctrl */
  63.  char *s;
  64.  int l;
  65.     {
  66.     char c,f,n;
  67.     f=0;c=0;
  68.     while(c<l)
  69.        {
  70.        regec:n=getchar();
  71.        if ((n<' ')&&(n!='\n')) goto regec;
  72.        if (n=='\n') {s[c]=0;f=1;c=l-1;}
  73.        else
  74.           s[c]=n;
  75.        c++;
  76.        }
  77.     if (f==0) {s[c]=0;while(getchar()!='\n');}
  78.     return(s);
  79.     }
  80.  
  81. #include <signal.h>
  82.  
  83. long sig_active=0;
  84.  
  85. sig_alon()
  86. {
  87.     extern int sig_occur();
  88.     sig_active=1;    
  89.     signal(SIGALRM,sig_occur);
  90.     alarm(2);
  91. }
  92.  
  93.  
  94.  
  95. unblock_alarm()
  96. {
  97.     signal(SIGALRM,sig_occur);
  98.     if(sig_active) alarm(2);
  99. }
  100.  
  101. block_alarm()
  102. {
  103.     signal(SIGALRM,SIG_IGN);
  104. }
  105.  
  106.  
  107. sig_aloff()
  108. {
  109.     sig_active=0;    
  110.     signal(SIGALRM,SIG_IGN);
  111.     alarm(2147487643);
  112. }
  113.  
  114. long interrupt=0;
  115.  
  116. sig_occur()
  117. {
  118.     extern char globme[];
  119.     if(sig_active==0) return;
  120.     sig_aloff();
  121.     openworld();
  122.     interrupt=1;
  123.     rte(globme);
  124.     interrupt=0;
  125.     on_timing();
  126.     closeworld();
  127.     key_reprint();
  128.     sig_alon();
  129. }
  130.  
  131.     
  132. sig_init()
  133. {
  134.     extern int sig_oops();
  135.     extern int sig_ctrlc();
  136.     signal(SIGHUP,sig_oops);
  137.     signal(SIGINT,sig_ctrlc);
  138.     signal(SIGTERM,sig_ctrlc);
  139.     signal(SIGTSTP,SIG_IGN);
  140.     signal(SIGQUIT,SIG_IGN);
  141.         signal(SIGCONT,sig_oops);
  142. }
  143.  
  144. sig_oops()
  145. {
  146.     sig_aloff();
  147.     loseme();
  148.     keysetback();
  149.     exit(255);
  150. }
  151.  
  152. sig_ctrlc()
  153. {
  154.     extern in_fight;
  155.     printf("^C\n");
  156.     if(in_fight) return;
  157.     sig_aloff();
  158.     loseme();
  159.     crapup("Byeeeeeeeeee  ...........");
  160. }
  161.  
  162.  
  163. set_progname(n,text)
  164. char *text;
  165. {
  166.     /*
  167.     int x=0;
  168.     int y=strlen(argv_p[n])+strlen(argv_p[1]);  
  169.     y++;
  170.     if(strcmp(argv_p[n],text)==0) return;
  171.     
  172.     while(x<y)
  173.        argv_p[n][x++]=0; 
  174.     strcpy(argv_p[n],text);
  175.     */
  176. }
  177.  
  178.